XLinq: XML Programming Refactored (The Return Of The Monoids)

I just posted my XML 2005 submission about XLinq on my homepage.
It describes the XLinq API in somewhat detail, and informally explains the relationship between LINQ and monads.

Select/From versus From/Select

Language design isn't just about big ideas, it's also about little details...

Don Box: Scheme Is Love

In writing Scheme programs, I've learned a lot about coding, design, architecture, and aesthetics.

Old news, right? Still, this piece might be worth sending around to your unenlightened frieds.

Visual Haskell

Visual Haskell is a complete development environment for Haskell software, based on Microsoft's Visual Studio platform. Visual Haskell integrates with the Visual Studio editor to provide interactive features to aid Haskell development, and it enables the construction of projects consisting of multiple Haskell modules, using the Cabal building/packaging infrastructure.

Visual Haskell is a complete system in one download: it includes a full GHC installation with libraries, and various tools including Haddock, Happy, and Alex.

Worth knowing about.

The essence of Dataflow Programming by Tarmo Uustalu and Varmo Vene

The Essence of Dataflow Programming

The abstract:

We propose a novel, comonadic approach to dataflow (streambased) computation. This is based on the observation that both general and causal stream functions can be characterized as coKleisli arrows of comonads and on the intuition that comonads in general must be a good means to structure context-dependent computation. In particular, we develop a generic comonadic interpreter of languages for context-dependent computation and instantiate it for stream-based computation. We also discuss distributive laws of a comonad over a monad as a means to structure combinations of effectful and context-dependent computation. We apply the latter to analyse clocked dataflow (partial streams based) computation.

If you've ever wondered about dataflow or comonads, this paper is a good read. It begins with short reviews of monads, arrows, and comonads and includes an implementation. One feature that stood out is the idea of a higher-order dataflow language.

Dynamic typing in OCaml

On many occasions on this site we've discussed embedding a dynamic type checking scheme in a statically typed language using a Univ type. On many of these occasions, it's been suggested that this is an in-principle solution that would never be usable in practice, Turing tar-pit, etc., etc. Well, someone decided to put their money where our mouths are, and now we have Dynaml.

I've only briefly looked at the tutorial, but this definitely goes a long way toward demonstrating a plausible Univ embedding of a dynamic type system. Of course, I'd be curious to hear what everyone else thinks...

(from the caml weekly news...)

RPC Under Fire

Steve Vinoski, RPC Under Fire, Internet Computing.

Nice discussion of the problems associated with the RPC model, which abstracts the network making remote calls look like local calls, even though they exhibit different types of failure.

Web services, JAX, and Cw are also mentioned.

Related links: here.

FLOPS 2006

The call for papers for FLOPS 2006 is now out.

FLOPS benefits from an eclectic mix of FP and LP papers,
one of the few venues where the two communities get
together. It should be a congenial meeting, situated under
Mt Fuji.

We have two excellent invited speakers.
Peter van Roy, on Mozart
Guy Steele, on Fortress (just confirmed)

Submission deadline is 11 November 2005,
the conference is 24--28 April 2006.
Do submit, do come!

Haskell's overlooked object system

A "major new release" from Oleg Kiselyov and Ralf Lämmel:

In a first phase, we demonstrate how far we can get with object-oriented functional programming, if we restrict ourselves to plain Haskell~98. In the second and major phase, we systematically substantiate that Haskell~98, with some common extensions, supports all the conventional OO features plus more advanced ones, including first-class lexically scoped classes, implicitly polymorphic classes, flexible multiple inheritance, safe downcasts and safe co-variant arguments. Haskell indeed can support width and depth, structural and nominal subtyping. We address the particular challenge to preserve Haskell's type inference even for objects and object-operating functions. Advanced type inference is a strength of Haskell that is worth preserving. Many of the features we get "for free": the type system of Haskell turns out to be a great help and a guide rather than a hindrance.

You can download the paper and OOHaskell from here.

Guest Blogger Erik Meijer

As you may have noticed Erik Meijer has been guest blogging here about his recent work on Microsoft's LINQ.

I am extremely pleased to have Erik guest blog here. I've been after him for a couple of years now to come join us.

Erik's many interests and contributions are chronicled on his home page, but I want to take this opportunity to remind everyone of the paper Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire by Erik, Maarten Fokkinga, and Ross Paterson (FPCA'91). This foundational paper is one of our favorites, and I urge those interested in grasping what functional programming is all about to go and read it. Hopefully, a more accessible version, titled Bananas in VB, is forthcoming...

We invite Guest Bloggers so that the LtU community can engage them in discussion about their work and opinions. I am sure the discussion with Erik can be enlightening for us all.